package cc.owoo.godpen.analysis;

import java.util.ArrayList;

/**
 * 缩进符生成器
 * Created by 摸鱼
 * 2022/05/27 下午 07:13
 */
public class Retract {
    private final ArrayList<String> list = new ArrayList<>(3);
    private int count;// 当前缩进符数量
    private boolean enable = true;// 是否启用

    public Retract() {
        this("    ");
    }

    /**
     * 创建一个缩进符生成器
     *
     * @param retract 缩进符
     */
    public Retract(String retract) {
        list.add("");
        list.add(retract);
        list.add(retract + retract);
    }

    /**
     * 设置是否启用，当不启用时，调用get函数将只会生成长度为0的字符串
     *
     * @param enable 是否启用
     */
    public void setEnable(boolean enable) {
        this.enable = enable;
    }

    /**
     * 是否启用
     *
     * @return 是否启用
     */
    public boolean isEnable() {
        return enable;
    }

    /**
     * 获取当前缩进符
     *
     * @return 缩进符
     */
    public String get() {
        return get(count);
    }

    /**
     * 获取当前缩进符数量
     *
     * @return 缩进数量
     */
    public int getCount() {
        return count;
    }

    /**
     * 改变缩进符数量
     *
     * @param count 增加的数值
     */
    public void add(int count) {
        this.count = Math.max(0, this.count + count);
    }

    /**
     * 设置当前缩进符数量
     *
     * @param count 缩进符数量
     */
    public void setCount(int count) {
        this.count = count;
    }

    /**
     * 获取缩进符
     *
     * @param count 缩进符数量
     * @return 缩进符
     */
    public String get(int count) {
        if (!enable)
            return "";
        while (list.size() <= count)
            list.add(list.get(list.size() - 1) + list.get(1));
        return list.get(count);
    }
}
